if (top != window) {
	alert(1);
	if (top.location.replace && !window.opera)
		top.location.replace('http://www.twinhelix.com/');
	else
		setTimeout('top.location.href="http://www.twinhelix.com/"', 500)
}
var isDOM = document.getElementById ? 1 : 0, isIE = document.all ? 1 : 0, isNS4 = navigator.appName == 'Netscape'
		&& !isDOM ? 1 : 0, isOp = self.opera ? 1 : 0, isDyn = isDOM || isIE
		|| isNS4;
function getRef(i, p) {
	p = !p ? document : p.navigator ? p.document : p;
	return isIE ? p.all[i] : isDOM ? (p.getElementById ? p : p.ownerDocument)
			.getElementById(i) : isNS4 ? p.layers[i] : null
};
function getSty(i, p) {
	var r = getRef(i, p);
	return r ? isNS4 ? r : r.style : null
};
if (!self.LayerObj)
	var LayerObj = new Function('i', 'p',
			'this.ref=getRef(i,p);this.sty=getSty(i,p);return this');
function getLyr(i, p) {
	return new LayerObj(i, p)
};
function LyrFn(n, f) {
	LayerObj.prototype[n] = new Function(
			'var a=arguments,p=a[0],px=isNS4||isOp?0:"px";with(this){' + f + '}')
};
LyrFn('x', 'if(!isNaN(p))sty.left=p+px;else return parseInt(sty.left)');
LyrFn('y', 'if(!isNaN(p))sty.top=p+px;else return parseInt(sty.top)');
function addEvent(o, n, f, l) {
	var a = 'addEventListener', h = 'on' + n;
	if (o[a] && !l)
		return o[a](n, f, false);
	if (o[h]) {
		o._c |= 0;
		var b = '_b' + (++o._c);
		o[b] = o[h]
	}
	o[h] = function(e) {
		e = e || self.event;
		var r = true;
		if (o[b])
			r = o[b](e) != false && r;
		o._f = f;
		r = o._f(e) != false && r;
		return r
	}
};
function FSMenu(myName, nested, cssProp, cssVis, cssHid) {
	this.myName = myName;
	this.nested = nested;
	this.cssProp = cssProp;
	this.cssVis = cssVis;
	this.cssHid = cssHid;
	this.cssLitClass = '';
	this.menus = {
		root : new FSMenuNode('root', true, this)
	};
	this.menuToShow = [];
	this.mtsTimer = null;
	this.showDelay = 0;
	this.switchDelay = 125;
	this.hideDelay = 500;
	this.showOnClick = 0;
	this.animations = [];
	this.animSpeed = 100
};
FSMenu.prototype.show = function(mN) {
	with (this) {
		menuToShow.length = arguments.length;
		for ( var i = 0; i < arguments.length; i++)
			menuToShow[i] = arguments[i];
		clearTimeout(mtsTimer);
		if (!nested)
			mtsTimer = setTimeout(myName + '.menus.root.over()', 10)
	}
};
FSMenu.prototype.hide = function(mN) {
	with (this) {
		clearTimeout(mtsTimer);
		if (menus[mN])
			menus[mN].out()
	}
};
function FSMenuNode(id, isRoot, obj) {
	this.id = id;
	this.isRoot = isRoot;
	this.obj = obj;
	this.lyr = this.child = this.par = this.timer = this.visible = null;
	this.args = [];
	var node = this;
	this.over = function(evt) {
		with (node)
			with (obj) {
				if (isNS4 && evt && lyr.ref)
					lyr.ref.routeEvent(evt);
				clearTimeout(timer);
				clearTimeout(mtsTimer);
				if (!isRoot && !visible)
					node.show();
				if (menuToShow.length) {
					var a = menuToShow, m = a[0];
					if (!menus[m] || !menus[m].lyr.ref)
						menus[m] = new FSMenuNode(m, false, obj);
					var c = menus[m];
					if (c == node) {
						menuToShow.length = 0;
						return
					}
					clearTimeout(c.timer);
					if (c != child && c.lyr.ref) {
						c.args.length = a.length;
						for ( var i = 0; i < a.length; i++)
							c.args[i] = a[i];
						var delay = child ? switchDelay : showDelay;
						c.timer = setTimeout('with(' + myName + '){menus["'
								+ c.id + '"].par=menus["' + node.id
								+ '"];menus["' + c.id + '"].show()}',
								delay ? delay : 1)
					}
					menuToShow.length = 0
				}
				if (!nested && par)
					par.over()
			}
	};
	this.out = function(evt) {
		with (node)
			with (obj) {
				if (isNS4 && evt && lyr && lyr.ref)
					lyr.ref.routeEvent(evt);
				clearTimeout(timer);
				if (!isRoot) {
					timer = setTimeout(myName + '.menus["' + id + '"].hide()',
							hideDelay);
					if (!nested && par)
						par.out()
				}
			}
	};
	if (this.id != 'root')
		with (this)
			with (lyr = getLyr(id))
				if (ref) {
					if (isNS4)
						ref.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
					addEvent(ref, 'mouseover', this.over);
					addEvent(ref, 'mouseout', this.out);
					if (obj.nested) {
						addEvent(ref, 'focus', this.over);
						addEvent(ref, 'click', this.over);
						addEvent(ref, 'blur', this.out)
					}
				}
};
FSMenuNode.prototype.show = function() {
	with (this)
		with (obj) {
			if (!lyr || !lyr.ref)
				return;
			if (par) {
				if (par.child && par.child != this)
					par.child.hide();
				par.child = this
			}
			var offR = args[1], offX = args[2], offY = args[3], lX = 0, lY = 0, doX = '' + offX != 'undefined', doY = '' + offY != 'undefined';
			if (self.page && offR && (doX || doY)) {
				with (page.elmPos(offR, par.lyr ? par.lyr.ref : 0))
					lX = x, lY = y;
				if (doX)
					lyr.x(lX + eval(offX));
				if (doY)
					lyr.y(lY + eval(offY))
			}
			if (offR)
				lightParent(offR, 1);
			visible = 1;
			if (obj.onshow)
				obj.onshow(id);
			setVis(1)
		}
};
FSMenuNode.prototype.hide = function() {
	with (this)
		with (obj) {
			if (!lyr || !lyr.ref)
				return;
			if (isNS4 && self.isMouseIn && isMouseIn(lyr.ref))
				return show();
			if (args[1])
				lightParent(args[1], 0);
			if (child)
				child.hide();
			if (par && par.child == this)
				par.child = null;
			par = null;
			if (lyr) {
				visible = 0;
				if (obj.onhide)
					obj.onhide(id);
				setVis(0)
			}
		}
};
FSMenuNode.prototype.lightParent = function(elm, lit) {
	with (this)
		with (obj) {
			if (!cssLitClass || isNS4)
				return;
			if (lit)
				elm.className += (elm.className ? ' ' : '') + cssLitClass;
			else
				elm.className = elm.className.replace(new RegExp(
						'(\\s*' + cssLitClass + ')+$'), '')
		}
};
FSMenuNode.prototype.setVis = function(sh) {
	with (this)
		with (obj) {
			lyr.timer |= 0;
			lyr.counter |= 0;
			with (lyr) {
				clearTimeout(timer);
				if (sh && !counter)
					sty[cssProp] = cssVis;
				if (isDOM && animSpeed < 100)
					for ( var a = 0; a < animations.length; a++)
						animations[a](ref, counter);
				counter += animSpeed * (sh ? 1 : -1);
				if (counter > 100) {
					counter = 100
				} else if (counter <= 0) {
					counter = 0;
					sty[cssProp] = cssHid
				} else if (isDOM)
					timer = setTimeout(myName + '.menus["' + id + '"].setVis('
							+ sh + ')', 50)
			}
		}
};
FSMenu.prototype.activateMenu = function(id, subInd) {
	with (this) {
		if (!isDOM)
			return;
		var a, ul, li, mRoot = getRef(id), nodes, count = 1;
		if (isIE) {
			var aNodes = mRoot.getElementsByTagName('a');
			for ( var i = 0; i < aNodes.length; i++) {
				addEvent(
						aNodes[i],
						'focus',
						new Function(
								'e',
								'var node=this.parentNode;while(node){if(node.onfocus)setTimeout(node.onfocus,1,e);node=node.parentNode}'));
				addEvent(
						aNodes[i],
						'blur',
						new Function(
								'e',
								'var node=this.parentNode;while(node){if(node.onblur)node.onblur(e);node=node.parentNode}'))
			}
		}
		var lists = mRoot.getElementsByTagName('ul');
		for ( var i = 0; i < lists.length; i++) {
			li = ul = lists[i];
			while (li) {
				if (li.nodeName.toLowerCase() == 'li')
					break;
				li = li.parentNode
			}
			if (!li)
				continue;
			a = null;
			for ( var j = 0; j < li.childNodes.length; j++)
				if (li.childNodes[j].nodeName.toLowerCase() == 'a')
					a = li.childNodes[j];
			if (!a)
				continue;
			var menuID = myName + '-id-' + count++;
			if (ul.id)
				menuID = ul.id;
			else
				ul.setAttribute('id', menuID);
			var sOC = (showOnClick == 1 && li.parentNode == mRoot)
					|| (showOnClick == 2);
			var eShow = new Function('with('
					+ myName
					+ '){'
					+ (sOC ? 'if(menus["' + menuID + '"]&&menus["' + menuID
							+ '"].visible)' : '') + ' show("' + menuID
					+ '",this)}');
			var eHide = new Function(myName + '.hide("' + menuID + '")');
			addEvent(a, 'mouseover', eShow);
			addEvent(a, 'focus', eShow);
			addEvent(a, 'mouseout', eHide);
			addEvent(a, 'blur', eHide);
			if (sOC)
				addEvent(
						a,
						'click',
						new Function(
								'e',
								myName
										+ '.show("'
										+ menuID
										+ '",this);if(e.cancelable&&e.preventDefault)e.preventDefault();return false'));
			if (subInd)
				a.insertBefore(subInd.cloneNode(true), a.firstChild)
		}
		menus[id] = new FSMenuNode(id, true, this)
	}
};
var menu = new FSMenu('menu', true, 'visibility', 'visible', 'hidden');
menu.cssLitClass = 'highlighted';
function animClipDown(ref, counter) {
	var cP = Math.pow(Math.sin(Math.PI * counter / 200), 0.75);
	ref.style.clip = (counter == 100 ? (window.opera ? ''
			: 'rect(auto,auto,auto,auto)') : 'rect(0,' + (ref.offsetWidth * cP)
			+ 'px,' + (ref.offsetHeight * cP) + 'px,0)')
};
menu.animations[menu.animations.length] = animClipDown;
menu.animSpeed = 20;
var menuFloat = 0;
var menuFixed = !isIE || isOp;
function menuLock() {
	menuFloat = !menuFloat;
	var mc = getSty('navigation');
	if (menuFixed) {
		mc.position = menuFloat ? 'fixed' : 'absolute';
		mc.top = menuFloat ? '6em' : '1em'
	} else {
		if (menuFloat)
			window.onscroll();
		else
			mc.paddingTop = 0
	}
	var tag = getRef('menulock');
	tag.removeChild(tag.firstChild);
	tag.appendChild(document
			.createTextNode('(' + (menuFloat ? 'Lock' : 'Float') + ' menu)'));
	if (!document.cookie.match(/navsettings=/)) {
		document.cookie = 'navsettings=menufloat:' + (menuFloat ? 1 : 0) + ';path=/'
	} else {
		document.cookie = document.cookie.replace(/menufloat:./,
				'menufloat:' + (menuFloat ? 1 : 0))
	}
};
if (!menuFixed)
	window.onscroll = function() {
		if (menuFloat && isDOM)
			getSty('navigation').paddingTop = (document.body.scrollTop || (isDOM ? document.documentElement.scrollTop
					: 0)) + 'px'
	};
var h1Arr = [];
function h1Setup() {
	h1Arr = document.getElementsByTagName('h1');
	for ( var h = 0; h < h1Arr.length; h++) {
		var h1 = h1Arr[h], text = h1.firstChild.nodeValue;
		h1.removeChild(h1.firstChild);
		h1.animNodes = [];
		for ( var i = 0; i < text.length; i++) {
			var span = document.createElement('span');
			span.appendChild(document.createTextNode(text.substring(i, i + 1)));
			h1.appendChild(span);
			h1.animNodes[h1.animNodes.length] = span
		}
		h1.animCount = 0;
		h1.animTimer = setInterval('h1Anim(' + h + ')', 50)
	}
};
function h1Anim(h) {
	var h1 = h1Arr[h], c = h1.animCount++, noAnim = 1;
	for ( var i = 0; i < h1.animNodes.length; i++) {
		var s = h1.animNodes[i];
		var frac = Math.max(0, Math.min(1, (c - i) / 10));
		if (s.animDone)
			continue;
		noAnim = 0;
		s.style.color = 'rgb(' + parseInt(255 - 255 * frac) + ','
				+ parseInt(255 - 111 * frac) + ',' + parseInt(255 - 111 * frac)
				+ ')';
		if (frac == 1) {
			s.style.marginLeft = 'auto';
			s.animDone = 1
		} else if (frac > 0)
			s.style.marginLeft = 0.6 * (1 - frac) + 'em'
	}
	if (noAnim)
		clearInterval(h1.animTimer);
	h1.style.visibility = 'visible'
};
var zoomVal = 0;
function zoom(val) {
	if (!document.body || !document.body.style)
		return;
	zoomVal = (val ? zoomVal + val : 0);
	document.body.style.fontSize = (80 + zoomVal * 10) + '%'
};
function loadHandler() {
	if (!isDOM)
		return;
	var arrow = null;
	if (document.createElement && document.documentElement) {
		arrow = document.createElement('span');
		arrow.appendChild(document.createTextNode('>'));
		arrow.className = 'subind'
	}
	menu.activateMenu("menuroot", arrow);
	if (document.createTextNode) {
		var ml = document.createElement('span');
		ml.setAttribute('id', 'menulock');
		addEvent(ml, 'click', menuLock);
		ml.appendChild(document.createTextNode('(Float menu)'));
		getRef('navigation').appendChild(ml);
		if (document.cookie && document.cookie.match(/menufloat:1/))
			menuLock()
	}
	if (!document.documentElement
			|| (isIE && !isOp && (navigator.userAgent.indexOf('Mac') > -1)))
		return;
	h1Setup();
	var lt = document.createElement('div'), nav = getRef('navigation');
	lt.setAttribute('id', 'linktitle');
	nav.appendChild(lt);
	addEvent(
			nav,
			'mouseover',
			new Function(
					'e',
					'e=e||window.event;var lt=getRef("linktitle");if(lt){while(lt.firstChild)lt.removeChild(lt.firstChild);e=e.target||e.srcElement;while(e&&(!e.title&&!e.title_orig))e=e.parentNode;if(e&&e.getAttribute){var t=e.getAttribute("title");if(t){e.title_orig=t;e.setAttribute("title","")}lt.appendChild(document.createTextNode(e.title_orig));}}'));
	addEvent(
			nav,
			'mouseout',
			new Function(
					'e',
					'var lt=getRef("linktitle");if(lt)while(lt.firstChild)lt.removeChild(lt.firstChild)'));
	var pZoom = document.createElement('div');
	pZoom.setAttribute('id', 'pagezoom');
	var zControls = [ [ '+X'.substring(0, 1), 'Zoom In', 'zoom(1)' ],
			[ '0', 'Restore Original Zoom', 'zoom(0)' ],
			[ '-', 'Zoom Out', 'zoom(-1)' ] ];
	for ( var c in zControls) {
		var tmp = document.createElement('span');
		tmp.appendChild(document.createTextNode(zControls[c][0]));
		tmp.setAttribute('title', zControls[c][1]);
		addEvent(tmp, 'click', new Function(zControls[c][2]));
		addEvent(tmp, 'mouseover', new Function('this.className="zoomHover"'));
		addEvent(tmp, 'mouseout', new Function('this.className=""'));
		pZoom.appendChild(tmp)
	}
	getRef('header').appendChild(pZoom);
	if (location.href.indexOf('twinhelix.com') == -1) {
		var warning = document.createElement('div');
		warning
				.appendChild(document
						.createTextNode('WARNING:Copying this site is a violation of international law.'));
		getRef('footer').appendChild(warning)
	}
};
if (navigator.userAgent.indexOf('KHTML') > -1)
	var safHack = setInterval(
			'if(document.readyState=="complete"){clearInterval(safHack);loadHandler()}',
			100);
else
	addEvent(window, 'load', loadHandler);
if (isDOM && document.documentElement) {
	document.write('<style type="text/css">h1{visibility:hidden}</style>')
}